Сравнение и объединение конфигураций
- Сравнить и объединить проекты
- Сравнить и объединить объекты
- Правила автоматической настройки объединения конфигураций
- Сравнение модулей с учетом семантики встроенного языка
- Сравнение и объединение модулей с учетом структуры
- Сравнение и объединение модулей с помощью внешних программ
- Редактор сравнения и объединения конфигураций
- Редактор сравнения и объединения модулей
- Панель сравнения файлов
- Группа параметров «Сравнение и объединение»
- Группа параметров «Внешние программы»
Сравнить и объединить проекты
Чтобы сравнить между собой и объединить два проекта, выполните следующие действия в панели Навигатор:
- Выделите проекты, которые нужно сравнить;
- Нажмите Сравнить/объединить в контекстном меню одного из выделенных проектов.
Назначение полей:
- Главный источник — проект в панели Навигатор или проект в файловой системе, который будет сравниваться;
- Второй источник — проект в панели Навигатор или проект в
файловой системе, с которым будет сравниваться главный источник;Ловкий прием: Если подвести курсор к рамке группы, то источник можно понятнуть мышью и поменять местом с другим источником.
- Общий предок — проект, который является предком главного и второго источников;
- Использовать общего предка — установите этот флажок, если вы хотите выполнять трехстороннее сравнение с использованием общего предка. Выберите предка в поле Общий предок;
- Разрешить удаление объектов главного источника — установите этот флажок, если хотите разрешить удаление объектов в главном источнике. Платформа «1С:Предприятия» автоматически разрешает это действие только в том случае, когда выполняется обновление конфигурации поставщика. Здесь же вы самостоятельно выбираете проекты для сравнения и объединения, поэтому и решение об установке флажка должны принимать самостоятельно;
- Сравнивать модули с учетом структуры — если флажок установлен, то модули встроенного языка сравниваются в разрезе отдельных методов, которые содержатся в модуле. В противном случае модули сравниваются как один общий текст;
- Стратегия
сопоставления — способ установления взаимного соответствия между
объектами вливаемой и текущей конфигурации. Этот способ будет использоваться в том
случае, если существуют конфликтующие изменения, которые нужно разрешить вручную в
редакторе сравнения и объединения конфигураций:
- По UUID — по внутреннему идентификатору объекта конфигурации;
- По имени — по имени объекта конфигурации;
- По UUID, затем по имени — сначала ищется объект конфигурации с таким же внутренним идентификатором. Если он не найден, тогда ищется объект конфигурации с таким же именем.
- Внешние настройки объединения — путь к файлу, в котором хранятся настройки объединения конфигураций, сохраненные ранее из редактора сравнения и объединения конфигураций.
Сравнить и объединить объекты
Чтобы сравнить между собой и объединить два объекта, выполните следующие действия в панели Навигатор:
- Выделите объекты, которые нужно сравнить;
- Нажмите Сравнить/объединить в контекстном меню одного из выделенных объектов.
Назначение полей:
- Главный источник — объект, который будет сравниваться;
- Второй источник — объект, с которым будет
сравниваться главный источник;Ловкий прием: Чтобы поменять объекты местами, в любом из них выберите из выпадающего списка другой объект.
- Стратегия
сопоставления — способ установления взаимного соответствия между
объектами вливаемой и текущей конфигурации. Этот способ будет использоваться в том
случае, если существуют конфликтующие изменения, которые нужно разрешить вручную в
редакторе сравнения и объединения конфигураций:
- По UUID — по внутреннему идентификатору объекта конфигурации;
- По имени — по имени объекта конфигурации;
- По UUID, затем по имени — сначала ищется объект конфигурации с таким же внутренним идентификатором. Если он не найден, тогда ищется объект конфигурации с таким же именем.
- Сравнивать модули с учетом структуры — если флажок установлен, то модули встроенного языка сравниваются в разрезе отдельных методов, которые содержатся в модуле. В противном случае модули сравниваются как один общий текст;
- Внешние настройки объединения — путь к файлу, в котором хранятся настройки объединения конфигураций, сохраненные ранее из редактора сравнения и объединения конфигураций.
Правила автоматической настройки объединения конфигураций
Операцию сравнения и объединения конфигураций можно вызвать прямой командой (например, Сравнить/объединить в контекстном меню проекта) либо опосредованно, выполняя слияние веток Git. Если это трехстороннее сравнение без конфликтных изменений, 1C:EDT объединит конфигурации автоматически. Трехстороннее сравнение, например, очень часто выполняется в Git.
Во всех остальных случаях после сравнения 1C:EDT автоматически установит настройки объединения конфигураций и откроет редактор сравнения и объединения. Это нужно для того, чтобы вы могли подтвердить или изменить настройки объединения, установленные автоматически.
В этом разделе описываются правила, в соответствии с которыми 1C:EDT устанавливает эти настройки.
-
- Настройки объединения

-
В редакторе сравнения и объединения 1C:EDT показывает конфигурацию в виде, который очень похож на то представление, которое она имеет в панели Навигатор. Разница заключается в том, что в редакторе дерево конфигурации более подробное. Например, оно содержит в себе все те свойства объектов, которые при работе в панели Навигатор показываются в отдельной панели Свойства (на рисунке у узла Конфигурация есть дочерний узел Свойства).

Настройка объединения представляет собой совокупность флажка (в первой колонке слева) и режима объединения (в последней колонке). Такая настройка есть у каждого узла в дереве (у каждой строки).
Флажок отображается для всех узлов, но не во всех узлах можно его изменить. Например, если сравниваемые значения одинаковые, флажок будет сброшен и установить его нельзя.
Режим объединения отображается не для всех узлов, а только:
- Для тех, которые участвуют в процедуре объединения;
- Для тех, которые поддерживают изменение режима объединения;
- Для тех, у которых выбран режим объединения, отличный от Не объединять.
- Флажки объединения

-
Каждый флажок имеет три состояния:
— установлен. Означает, что узел и все его потомки будут участвовать в процедуре объединения в соответствии со своими правилами объединения.
— снят. Означает, что узел и все его потомки не будут участвовать в процедуре объединения и останутся без изменений.
— установлен частично. Означает, что среди потомков есть узлы как с установленными, так и со снятыми флажками. Узлы с установленными флажками будут участвовать в процедуре объединения, а узлы со снятыми флажками останутся без изменений.
Состояние установлен частично
возможно только для тех узлов, у которых есть потомки. Оно устанавливается автоматически, его нельзя установить в явном виде, нажимая на флажок. Нажатие на флажок, который находится в состоянии установлен частично
, переводит его в состояние снят
.При установке или снятии флажка у всех дочерних узлов также устанавливаются или снимаются флажки. При этом родительским узлам устанавливается состояние, соответствующее текущей расстановке флажков у детей.
- Режимы объединения

-
Существует четыре режима объединения:
- Не объединять. Выбор этого режима снимает флажок объединения. Фактически это означает, что узел и все его потомки не будут участвовать в процессе объединения.
- Взять справа. При объединении будет взято значение из второго источника. Если этот режим выбран для родительского узла, можно устанавливать и снимать флажки у его дочерних узлов, исключая их из процесса объединения или добавляя к объединению.
- Объединить с приоритетом второго источника. Этот режим используется при трехстороннем сравнении и указывает, как должны быть обработаны конфликтные изменения. Изменения, не имеющие конфликтов, будут объединены, а при объединении изменений, имеющих конфликты, будет взято значение из второго источника. Если этот режим выбран для родительского узла, изменение флажков у дочерних узлов будет невозможно.
- Объединить с приоритетом главного источника. Этот режим работает аналогично предыдущему — с той разницей, что при конфликтные изменения не будут участвовать в объединении.
- Правила настройки объединения

-
Если попытаться сформулировать эти правила в двух словах, то получится, что при двустороннем сравнении флажки объединения устанавливаются таким образом, чтобы все изменения были перенесены в главный источник. При трехстороннем сравнении дополнительно к этому флажки не устанавливаются в тех случаях, когда изменения есть только в главном источнике, чтобы случайно не "обнулить" их.
Поэтому в подавляющем большинстве случаев ваша задача будет заключаться не в том, чтобы установить флажки там, где они не установлены, а в том, чтобы проконтролировать конфликтные изменения модулей и, возможно, снять флажки у тех узлов, которые вы не хотите переносить в главный источник.
Если говорить подробно, то 1C:EDT автоматически устанавливает флажки в состояние снят
и не позволяет изменять их в следующих случаях: - Когда значения в главном источнике и во втором источнике одинаковы (нечего изменять);
- Когда изменение объекта конфигурации в главном источнике запрещено правилами поддержки конфигурации (нельзя изменять);
- Когда объект конфигурации присутствует только в главном источнике и выполняются следующие условия (нельзя удалять):
- Выполняется двустороннее сравнение;
- В диалоге сравнения был снят флажок Разрешить удаление объектов главного источника.
Если ни одно из этих правил не сработало, то дальше 1C:EDT действует следующим образом:
- Если объект конфигурации присутствует только во втором источнике, флажок будет установлен
, режим объединения будет Взять справа (новое надо добавить); - Если объект конфигурации присутствует только в главном источнике, флажок будет сброшен
, режим объединения будет Не объединять (удалить из главного источника можно, но только явным образом, вручную включив объект в процедуру объединения); - Если выполняется двустороннее сравнение и значения в главном и втором источниках различаются, флажок будет установлен
, режим объединения будет Взять справа (существующее надо обновить); - Если выполняется трехстороннее сравнение:
- и имеется конфликтное изменение — главный и второй источники имеют разные отличия от предка — флажок будет сброшен
, режим объединения будет Не объединять; - и значение во втором источнике не отличается от предка, флажок будет сброшен
, режим объединения будет Не объединять (либо нет необходимости в объединении, главный источник тоже не отличается от предка, либо изменения в главном источнике нужно сохранить и не "затереть").
- и имеется конфликтное изменение — главный и второй источники имеют разные отличия от предка — флажок будет сброшен
Есть исключение, которое касается настроек поддержки. Если при объединении конфигураций есть конфликтные изменения в настройках поддержки, настройки поддержки объединяются всегда с режимом объединения Взять справа;
- Настройки объединения
Сравнение модулей с учетом семантики встроенного языка
При сравнении разных модулей или разных версий одного и того же модуля используется встроенный механизм сравнения файлов.
Он учитывает семантику встроенного языка и может определять перемещение фрагментов кода (процедур и функций) внутри модуля. В результате вы не просто видите, что строки одного модуля отличаются от строк другого, а понимаете, что в принципе модуль не изменился, изменилось лишь положение процедур внутри него.
(Отобразить изменения порядка / Скрыть изменения
порядка)

Также можно группировать соседние измененные строки в один блок. Это облегчает анализ изменений в этих строках.
(Группировать соответствия / Разгруппировать соответствия)

Сравнение и объединение модулей с учетом структуры
Чтобы сравнивать и объединять модули с учетом их структуры, в параметрах 1C:EDT установите флажок Сравнивать модули с учетом структуры.
Этот режим позволяет вам анализировать отличия в разрезе отдельных методов модуля. При сравнении конфигураций методы отображаются в общей структуре конфигурации. Можно видеть, например, добавленные методы, можете исключить из объединения любой из методов.

При сравнении модулей в верхней части редактора сравнения и объединения модулей отображается список методов, а в нижней части сравнивается только выбранный метод.

В этом режиме 1C:EDT сначала выполняет разбор содержимого модуля, а после этого выполняет сравнение. Если разбор содержимого модуля завершился неудачно (например, из-за синтаксической ошибки), то модуль будет сравниваться без учета структуры, как один общий текст.
Сравнение и объединение модулей с помощью внешних программ
Чтобы сравнивать и объединять модули с помощью внешних программ, в параметрах 1C:EDT укажите путь к исполняемому файлу внешней программы и операции, для которых вы будете ее использовать.
Если вы хотите, чтобы в редакторе сравнения и объединения конфигураций режим объединения с помощью внешней программы автоматически устанавливался для всех модулей, также установите в параметрах 1C:EDT флажок Автоматически объединять с помощью выбранных программ. В противном случае вам нужно будет вручную выбрать этот режим для интересующих вас модулей.
Тут же вы можете выбрать, какие узлы объединять внешней программой: Все или Только дважды измененные, т. е. узлы с конфликтными изменениями.
Также в параметрах можно указать таймаут выполнения внешней программы, по истечении которого она будет прервана.

Прежде чем выполнять объединение, можно проанализировать некоторые модули. Для этого нажмите Сравнить с помощью внешней программы контекстном меню модуля.

С помощью этой команды можно сравнить тексты модулей в источниках.

При нажатии на шестеренку в строке модуля внешняя программа запускается для объединения модулей.

Результат объединения сохраняется в редакторе, при этом правило объединения меняется на Ручное объединение.
![]()
Если необходимость индивидуальной работы с модулями отсутствует, можно сразу запустить процедуру объединения. В этом случае сначала запустится объединение с помощью внешней программы для тех узлов, у которых установлен режим Объединить с помощью внешней программы. После этого будет выполнено основное обновление.
Если на этапе работы внешней программы вы не примите результат ее объединения для каких-то узлов, то будет снова открыт редактор сравнения объединения и на таких узлах появляется значок шестеренки с восклицательным знаком.
![]()
Редактор сравнения и объединения конфигураций
Этот редактор позволяет вам просматривать отличия одной конфигурации от другой, отмечать объекты и свойства, которые следует (или, наоборот, не следует) перенести в главную конфигурацию, и выполнять объединение двух конфигураций. Также из этого редактора можно вызвать редактор сравнения и объединения текстовых файлов (подробнее) — с его помощью можно для каждого модуля в отдельности выполнить сравнение и при необходимости отредактировать текст, который должен получиться в результате объединения двух модулей.

-
- Условные обозначения

-
— флажок объединения установлен. Означает, что узел и все его потомки будут участвовать в процедуре объединения в соответствии со своими правилами объединения;
— флажок объединения снят. Означает, что узел и все его потомки не будут участвовать в процедуре объединения и останутся без изменений;
— Флажок объединения установлен частично. Означает, что среди потомков есть узлы как с установленными, так и со снятыми флажками. Узлы с установленными флажками будут участвовать в процедуре объединения, а узлы со снятыми флажками останутся без изменений.
- Экспорт настроек объединения

- Настройка объединения представляет собой совокупность флажка (в первой колонке слева) и режима объединения (в последней колонке). Такая настройка есть у каждого узла в дереве (у каждой строки). После того, как вы выставили флажки и режимы нужным образом, можно сохранить эти настройки в файл, чтобы в следующий раз использовать их автоматически.
- Условные обозначения
Редактор сравнения и объединения модулей
Редактор сравнения и объединения текстовых файлов позволяет вам сравнивать содержимое двух модулей и объединять его.
Редактор состоит из трех областей. Слева находится главный источник, справа — второй источник, а посередине — результат объединения.

Этот редактор вызывается для сравнения и объединения модулей, которые присутствуют в редакторе сравнения и объединения конфигураций. Чтобы открыть этот редактор, нажмите "шестеренку" в строке Модуль.

Редактор сравнения и объединения текстовых файлов можно использовать, например, для сравнения двух общих модулей. Также мы интегрировали его в редактор сравнения и объединения конфигураций, поэтому при сравнении модулей будет также использоваться этот редактор.
Можно выбирать разные стратегии сравнения и объединения. Набор этих стратегий расширяемый, поэтому при желании можно реализовать собственную стратегию.

Анализируя изменения, можно переходить по блокам изменений, можно принудительно переносить изменения слева и справа в результат, а также редактировать результат вручную.
Можно сравнивать любые две области попарно в отдельном диалоге.

Можно отключать и включать синхронную прокрутку всех трех областей — как горизонтально, так и вертикально.
Панель сравнения файлов
Панель сравнения файлов позволяет вам сравнивать текстовое содержимое двух файлов.

Она может быть открыта при синхронизации локального и удаленного хранилища для просмотра отличий в модулях. Также она может быть открыта для просмотра отличий разных версий одного модуля в локальном хранилище.
Кроме того, можно с ее помощью сравнивать содержимое файлов метаданных и других объектов, хранящихся в формате XML.
В этой панели реализован встроенный в 1C:EDT механизм сравнения файлов. Его преимущество заключается в том, что он учитывает семантику и может определять перемещение фрагментов кода (процедур и функций). Например, можно включить показ изменения порядка
, и тогда станет видно, что процедура ПриСозданииНаСервере() изменила свое местоположение в модуле.

Кроме этого, можно группировать соответствия
, что облегчает восприятие изменений в нескольких соседних строках: без группировки (верхний рисунок) и с группировкой (нижний рисунок).

Группа параметров «Сравнение и объединение»
Группа параметров Сравнение и объединение позволяет вам выбрать способ сравнения модулей: с учетом их структуры или без учета.
Группа параметров «Внешние программы»
Группа параметров Внешние программы позволяет вам настроить то, какие внешние программы и каким образом будут использоваться для сравнения модулей.